/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Expertos;

import Entidades.Empleado;
import Entidades.Perfil;
import Entidades.Usuario;
import Entidades.UsuarioPerfil;
import Persistencia.JPAControllerPerfil;
import Persistencia.JPAControllerUsuario;
import Persistencia.JpaController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author diego
 */
public class ExpertoUsuario {

    Date fechabaja = new Date();
    Date fechalta = new Date();
    Usuario usuario = new Usuario();

    public void modificarUsuario(Usuario usuario, String nombreusuario, String pass, boolean cambioClave) {
        JpaController jpa = new JpaController();
        usuario.setNombreUsuario(nombreusuario);
        usuario.setContrasenaActual(pass);
        if(cambioClave){
        usuario.setFechaCambioClave(fechalta);
        }
        jpa.begin();
        jpa.edit(usuario);
        jpa.commit();
    }

    public Usuario nuevoUsuario(Empleado emple, String nombreusuario, String pass) {
        JpaController jpa = new JpaController();
        usuario.setNombreUsuario(nombreusuario);
        usuario.setContrasenaActual(pass);
        usuario.setUsuarioActivo(true);
        usuario.setFechaCambioClave(fechalta);
        usuario.setIdEmpleado(emple);
        jpa.begin();
        jpa.create(usuario);
        jpa.commit();
        return usuario;
    }

    public List<UsuarioPerfil> eliminarPerfilUsuario(Usuario us, List<Perfil> lp) {
        JPAControllerPerfil jpa = new JPAControllerPerfil();
        List<UsuarioPerfil> lup2 = new ArrayList<UsuarioPerfil>(lp.size());
        jpa.begin();
        jpa.borrarPerfilesViejos(us);
        for (int i = 0; i < lp.size(); i++) {
            UsuarioPerfil up2 = new UsuarioPerfil();
            up2.setIdUsuario(us);
            up2.setIdPerfil(lp.get(i));
            up2.setFechaAltaUsuario(fechalta);
            if (true) {
                up2.setFechaBajaUsuario(fechabaja);
            }
            jpa.create(up2);
            lup2.add(up2);
        }
        jpa.commit();
        return lup2;
    }

    public List<UsuarioPerfil> nuevoUsuarioPerfil(List<Perfil> lpp) {
        JpaController jpa = new JpaController();
        jpa.begin();
        List<UsuarioPerfil> lup = new ArrayList<UsuarioPerfil>(lpp.size());
        for (int i = 0; i < lpp.size(); i++) {
            UsuarioPerfil up = new UsuarioPerfil();
            up.setIdUsuario(usuario);
            up.setIdPerfil(lpp.get(i));
            up.setFechaAltaUsuario(fechalta);
            jpa.create(up);
            lup.add(up);
        }
        jpa.commit();
        return lup;
    }

    public List<Usuario> buscarUsuarioNombre(String nombre) {
        List<Usuario> listaUsuario;
        JPAControllerUsuario jpap = new JPAControllerUsuario();
        listaUsuario = jpap.validarUsuario(nombre);
        return listaUsuario;
    }

    public void eliminarUsuario(Usuario ul) {
        JpaController jpa = new JpaController();
        ul.setUsuarioActivo(false);
        jpa.begin();
        jpa.edit(ul);
        jpa.commit();
    }

    public List<Usuario> buscarUsuarios() {
        List<Usuario> listausuario;
        JPAControllerUsuario jpap = new JPAControllerUsuario();
        listausuario = jpap.buscarPorVigencia(true);
        return listausuario;
    }
}
